Sự tương thích giữa các phiên bản PGP Pretty_Good_Privacy

Các vấn đề về bản quyền và chính sách xuất khẩu đã gây ra một số vấn đề tương thích giữa các phiên bản PGP. Tuy nhiên từ khi OpenPGP được chấp thuận và từ khi Tập đoàn PGP được thành lập (2002) thì tình trạng nói trên dã được cải thiện đáng kể.

OpenPGP quy định các cơ chế thương lượng giữa các chương trình PGP ở các phía của đường truyền cũng như thuật toán mã hóa được sử dụng và các tính năng bổ sung khác từ phiên bản PGP 2.x. Tất cả các chương trình tuân theo PGP đều bắt buộc phải thực hiện những quy định này. Vì vậy, không tồn tại những vấn đề tương thích lớn giữa các phiên bản PGP, bất kể nó được lập trình từ đâu: PGP Corp, McAfee, Gnu/FSF (ie, GPG), Hushmail, Veridis, Articsoft, Forum... Các lập trình viên của các chương trình này cũng có mối quan hệ nhất định với nhau. Họ coi những bất tương thích là các lỗi phần mềm và sửa mỗi khi phát hiện ra.

Vấn đề tương thích của PGP 2.x

Khả năng tương thích của các phiên bản PGP gần đây với PGP 2.x có phần phức tạp hơn. PGP 2 đã sử dụng các thuật toán có bản quyền dưới nhiều điều khoản khác nhau. Bản quyền của RSA đã hết hiệu lực từ năm 2000 nhưng bản quyền của IDEA chỉ hết hiệu lực vào 2010-2011. Một số phiên bản PGP gần đây cung cấp khả năng tương thích với PGP 2,x (các phiên bản của PGP Corp và Hushmail) nhưng các phiên bản của các nhà cung cấp khác thì không tương thích. Đáng kể nhất là GnuPG không đảm bảo tính năng này (IDEA). Để có thể làm việc với PGP 2.x thì phải có môđun bổ sung (plugin) cho GnuPG. Tuy nhiên người dùng phải tự xây dựng môđun này. Để sử dụng IDEA cho các mục đích thương mại thì người dùng cần phải có giấy phép trong khi họ có thể sử dụng miễn phí cho các mục đích khác.

Vào thời điểm năm 2004, cách tốt nhất để tránh các vấn đề không tương thích với PGP 2.x là không sử dụng chúng và sử dụng các phiên bản tuân theo chuẩn OpenPGP. Một số vấn đề nhỏ về an ninh của PGP 2.x đã được phát hiện và một số đã được sửa. Tuy nhiên một số trong các giao thức cơ bản dùng trong PGP 2.x có những điểm yếu có thể bị tấn công và chúng vẫn chưa được sửa. Các lỗi này không xuất hiện trong tiêu chuẩn OpenPGP cũng như các bản thực hiện tiêu chuẩn. Mặc dù các bản PGP 2.x đã vá lỗi không có vấn đề nghiêm trọng nào nhưng nhóm làm việc của IETF vẫn không tán thành việc tương thích với OpenPGP. Ståle Schumacher Ytteborg vẫn duy trì trang web pgpi.org trong đó cung cấp hầu hết các phiên bản PGP kể từ 2.x.

Do nguyên nhân lịch sử, giữa các phiên bản PGP 2.x tồn tại vấn đề không tương thích một cách chủ ý (do bản quyền RSA). Một phần trong những nỗ lực giải quyết điều này là yêu cầu của phiên bản 2.6 phải tương thích với các phiên bản 2.x trước nó. Điều này được thực hiện bằng cách nâng cấp cấu trúc dữ liệu bên trong và sử dụng bản thực hiện RSAREF của RSA. Mã nguồn của PGP thực hiện thuật toán RSA có thể được sử dụng hợp pháp bên ngoài Hoa Kỳ (chẳng hạn PGP 2.6.3i). Bộ mã này có tốc độ thực hiện thuật toán nhanh gấp đôi so với mã của RSAREF.

Trong thời điểm đó, tại Hoa Kỳ, đội ngũ phát triển PGP đã viết PGP 3 (sau này đổi tên thành PGP 5, xem phần trên) và tiêu chuẩn OpenPGP đã được chấp nhận. Các khó khăn về bản quyền đã buộc họ phải loại bỏ RSAnhưng vào năm 2000 (khi bản quyền hết hạn) thì PGP và OpenPGP tiếp tục hỗ trợ thuật toán này. Và từ đó không tồn tại các phiên bản cho Hoa Kỳ và quốc tế riêng biệt nữa.

Tóm lại, trong thời điểm hiện nay, người sử dụng nên dùng các phiên bản mới tuân theo OpenPGP. Sự hợp tác giữa các nhà phát triển đã giải quyết phần lớn các vấn đề không tương thích giữa chúng.

So sánh các đặc tính

So sánh với RFC 1991 (PGP 2.x), OpenPGP đưa ra nhiều tính năng mới. Nó hỗ trợ khả năng tương thích ngược có nghĩa các phiên bản thực hiện OpenPGP có thể đọc và sử dụng các khóa, chứng thực của các phiên bản trước đó. Tuy nhiên vấn đề này bị phức tạp hóa do các nguyên nhân đã nêu ở trên.

PGP 2.x không có khả năng tương thích xuôi vì nó không thể sử dụng các văn bản hay khóa tuân theo OpenPGP.

Trong bảng sau, các thuật toán bắt buộc được đánh dấu bằng dấu *.

Đặc tínhPGP 2.x (RFC 1991)OpenPGP (RFC 2440)
Định dạng khóaKhóa V3Khóa V4
Thuật toán khóa bất đối xứng*RSA (mã hóa & chữ ký)RSA (mã hóa & chữ ký)
*DSA (chữ ký)
*Elgamal (mã hóa)
Thuật toán khóa đối xứng*IDEAIDEA
*Triple-DES
CAST5
Blowfish
AES 128, 192, 256
Twofish
Hàm băm mật mã*MD5MD5
*SHA-1
RIPEMD-160
SHA-256
SHA-384
SHA-512
Thuật toán nénZIPZIP
gzip
bzip2

Các tính năng bổ sung của khóa V4 so với V3 của OpenPGP:

  • Khóa công khai có thể có các khóa con bên cạnh khóa chính, cho phép sử dụng các khóa khác nhau cho mã hóa và chữ ký
  • Hỗ trợ nhiều thuật toán khác nhau để đảm bảo khả năng tương thích:
    • Một số thuật toán là bắt buộc
    • Khóa công khai của người nhận có thể xác định thứ tự ưu tiên của các thuật toán
  • Mô hình mạng lưới tín nhiệm được mở rộng với khả năng hỗ trợ tính năng chữ ký được tin tưởng (chữ ký này không những được tin mà còn được quyền xác nhận những chữ ký khác), cho phép thực hiện một dạng của nhà cung cấp chứng thực số.
  • Một chứng thực số có thể quy định một khóa khác có khả năng thu hồi nó.
  • Một số lỗi an ninh nhỏ trong mô tả ID và định dạng được sửa.

(V3 và V4 chỉ đến hệ thống phiên bản sử dụng bên trong định dạng dữ liệu chứ không phải phiên bản phần mềm PGP)